﻿using System;
using System.Collections.Generic;

using System.Linq;

using System.Net.Security;

using System.Runtime.Serialization;

using System.ServiceModel;
using System.ServiceModel.Web;

using System.Text;

using nms.gaming.model;

using nms.gaming.progressive;
using nms.gaming.progressive.model;
using System.ServiceModel.Activation;

namespace nms.gaming.webservice
{
    /// <summary>
    /// </summary>
    [ServiceContract]
    public interface IProgressiveJackpotService
    {
        /// <summary>
        /// </summary>
        /// <param name="host"></param>
        /// <param name="game"></param>
        /// <param name="symbol"></param>
        /// <returns></returns>
        [OperationContract]
        [WebGet( UriTemplate="{host}/{game}/{symbol}/discover$format=xml" , ResponseFormat= WebMessageFormat.Xml)]
        [FaultContractAttribute(typeof(ServiceFault), Name ="servicefault", Namespace= "nms.gaming", Action = "http://www.nms.co.uk/gaming/servicefault")]
        GamingEvent Discover( string host , string game , string symbol);

        /// <summary>
        /// </summary>
        /// <param name="host"></param>
        /// <param name="game"></param>
        /// <param name="symbol"></param>
        /// <returns></returns>
        [OperationContract]
        [WebGet(UriTemplate = "{host}/{game}/{symbol}/discover", ResponseFormat = WebMessageFormat.Json)]
        [FaultContractAttribute(typeof(ServiceFault), Name = "servicefault", Namespace = "nms.gaming", Action = "http://www.nms.co.uk/gaming/servicefault")]
        GamingEvent DiscoverJSON(string host, string game, string symbol);

        /// <summary>
        /// </summary>
        /// <param name="host"></param>
        /// <param name="game"></param>
        /// <param name="symbol"></param>
        /// <returns></returns>
        [OperationContract]
        [WebGet(UriTemplate = "{host}/{game}/{symbol}/discover$format=json", ResponseFormat = WebMessageFormat.Json)]
        [FaultContractAttribute(typeof(ServiceFault), Name = "servicefault", Namespace = "nms.gaming", Action = "http://www.nms.co.uk/gaming/servicefault")]
        GamingEvent DiscoverJSON_EXPLICIT(string host, string game, string symbol);

        /// <summary>
        /// </summary>
        /// <param name="host"></param>
        /// <param name="game"></param>
        /// <param name="symbol"></param>
        /// <param name="volume"></param>
        /// <returns></returns>
        [OperationContract]
        [WebGet(UriTemplate = "{host}/{game}/{symbol}/play$format=xml?volume={volume}", ResponseFormat = WebMessageFormat.Xml)]
        [FaultContractAttribute(typeof(ServiceFault), Name = "servicefault", Namespace = "nms.gaming", Action = "http://www.nms.co.uk/gaming/servicefault")]
        GamingEvent Play(string host, string game, string symbol, string volume);
        
        /// <summary>
        /// </summary>
        /// <param name="host"></param>
        /// <param name="game"></param>
        /// <param name="symbol"></param>
        /// <param name="volume"></param>
        /// <returns></returns>
        [OperationContract]
        [WebGet(UriTemplate = "{host}/{game}/{symbol}/play?volume={volume}" , ResponseFormat= WebMessageFormat.Json )]
        [FaultContractAttribute(typeof(ServiceFault), Name = "servicefault", Namespace = "nms.gaming", Action = "http://www.nms.co.uk/gaming/servicefault")]
        GamingEvent PlayJSON(string host, string game, string symbol, string volume);

        /// <summary>
        /// </summary>
        /// <param name="host"></param>
        /// <param name="game"></param>
        /// <param name="symbol"></param>
        /// <param name="volume"></param>
        /// <returns></returns>
        [OperationContract]
        [WebGet(UriTemplate = "{host}/{game}/{symbol}/play$format=json?volume={volume}", ResponseFormat = WebMessageFormat.Json)]
        [FaultContractAttribute(typeof(ServiceFault), Name = "servicefault", Namespace = "nms.gaming", Action = "http://www.nms.co.uk/gaming/servicefault")]
        GamingEvent PlayJSON_EXPLICIT(string host, string game, string symbol, string volume);

    }

}
